package com.tp2.bo.impl;

import com.tp2.bo.Oferta;
import com.tp2.dominio.Descuento;
import com.tp2.dominio.MedioDePago;
import com.tp2.dominio.Producto;
import java.util.ArrayList;
import java.util.List;

public class OfertaTotal extends Oferta {

    private Integer porcentaje;
    
    public OfertaTotal(){
    	super();
    	this.setPrioridad(3);
    }
    @Override
    public List<Descuento> aplicar(List<ProductoCompra> productos, MedioDePago medioDePagoCompra) {

        List<Descuento> descuentosAplicados = new ArrayList<Descuento>();
        
        if (esMedioDePagoValido(medioDePagoCompra)) {
            
        	double totalCompra = 0;
            for (Producto producto : productos) {
                totalCompra += producto.getPrecioConDescuento();
            }

            double descuentoCalculado = (totalCompra * getPorcentaje()) / 100;

            descuentosAplicados.add(new Descuento(getDescripcion(), descuentoCalculado));
        }

        return descuentosAplicados;
    }

    public MedioDePago getMedioDePago() {
        return medioDePago;
    }

    public void setMedioDePago(MedioDePago medioDePago) {
        this.medioDePago = medioDePago;
    }

    public Integer getPorcentaje() {
        return porcentaje;
    }

    public void setPorcentaje(Integer porcentaje) {
        this.porcentaje = porcentaje;
    }
    
    public String getDescripcion(){
    	
    	if (descripcion == null){
        
    		String descripcionDescuento = "Descuento para cualquier medio de pago ";
        
    		if (getMedioDePago() != null) {
    			descripcionDescuento = "Descuento con medio de pago " + getMedioDePago().getNombre();
    		}
    		
    		return descripcionDescuento;
    	}
    	
    	return descripcion;
    		
    }
}
